package com.hksj.Intelligentmanagement.auth.dto;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.validator.constraints.NotBlank;

import javax.validation.constraints.Pattern;

/**
 * @ClassName UserDTO
 * @Description TODO
 * @Author @陈章
 * @Date 2023/2/22 10:00
 * @Version 1.0
 * @NotNull 不能为 null，但可以为 empty，一般用在 Integer 类型的基本数据类型的非空校验上，
 * 而且被其标注的字段可以使用 @size、@Max、@Min 对字段数值进行大小的控制
 * @NotEmpty 不能为 null，且长度必须大于 0，一般用在集合类上或者数组上
 * @NotBlank 适用于 String 类型的数据上，加了@NotBlank 注解的参数不能为 Null 且 trim() 之后 size > 0
 */
@Data
public class UserDTO {

    @ApiModelProperty(value = "用户姓名,修改时传值")
    @NotBlank(message = "id不能为空", groups = {Update.class})
    private String id;

    @ApiModelProperty(value = "用户姓名")
    @NotBlank(message = "姓名不能为空", groups = {Save.class})
    private String username;

    @ApiModelProperty(value = "用户状态{（0正常 1停用）}")
    private String nickName;

    @ApiModelProperty(value = "用户密码")
    @NotBlank(message = "密码不能为空", groups =  {Save.class})
    private String passWord;

    @ApiModelProperty(value = "用户状态{（0正常 1停用）}")
    private String status;

    @ApiModelProperty("邮箱")
    private String email;

    @ApiModelProperty(value = "用户手机号")
    @Pattern(regexp = "^((13[0-9])|(14[5,7,9])|(15([0-3]|[5-9]))|(166)|(17[0,1,3,5,6,7,8])|(18[0-9])|(19[0-9]))\\d{8}$", message = "手机号格式错误")
    private String phoneNumber;

    @ApiModelProperty(value = "用户性别")
    private String sex;

    @ApiModelProperty(value = "用户头像")
    private String avatar;

    @ApiModelProperty(value = "用户类型（0管理员，1普通用户）")
    private String userType;

    /**
     * 保存的时候校验分组
     */
    public interface Save {
    }

    /**
     * 更新的时候校验分组
     */
    public interface Update {
    }

}
